﻿// ===============================================================================
//  Copyright © ymind.net. All rights reserved .
//  官方网站：http://ymind.net/
//  版权所有：彦铭工作室 老陈出品
// ===============================================================================

using System;
using System.Collections.Generic;
using System.Runtime.InteropServices;

namespace Lcsoft.TemplateEngine.XHtmlParser
{
	/// <summary>
	/// 表示 <see cref="XHtmlAttribute"/> 的集合。
	/// </summary>
	[ComVisible(true)]
	[Serializable]
	public sealed class XHtmlAttributeCollection : SortedList<string, XHtmlAttribute>
	{
		/// <summary>
		/// 初始化 <see cref="XHtmlAttributeCollection"/> 类的新实例。
		/// </summary>
		/// <param name="element">指定一个 <see cref="XHtmlElement"/> 对象的实例。</param>
		internal XHtmlAttributeCollection(XHtmlElement element) : base(StringComparer.CurrentCultureIgnoreCase)
		{
			if (element == null) throw new ArgumentNullException("element");

			this.HtmlElement = element;
		}

		/// <summary>
		/// 获取当前 <see cref="XHtmlAttributeCollection"/> 所属的 <see cref="XHtmlElement"/> 对象。
		/// </summary>
		public XHtmlElement HtmlElement { get; private set; }

		/// <summary>
		/// 确定当前集合是否包含具有指定名称的 <see cref="XHtmlAttribute"/> 对象。
		/// </summary>
		/// <param name="name"><see cref="XHtmlAttribute"/> 的名称。</param>
		/// <returns>如果当前集合是否包含具有指定名称的 <see cref="XHtmlAttribute"/> 对象则返回 true，否则返回 false。</returns>
		public bool Contains(string name) { return this.IndexOf(name) > -1; }

		/// <summary>
		/// 返回具有指定名称的 <see cref="XHtmlAttribute"/> 对象在集合中的索引值。
		/// </summary>
		/// <param name="name"><see cref="XHtmlAttribute"/> 的名称。</param>
		/// <returns>如果当前集合是否包含具有指定名称的 <see cref="XHtmlAttribute"/> 对象则返回其在集合中的索引值，否则返回 -1。</returns>
		public int IndexOf(string name) { return this.IndexOfKey(name); }
	}
}
